const fs = require('fs');
const { Transform } = require('stream');

const upperCaseTransform = new Transform({
    transform(chunk, encoding, callback) {
        this.push(chunk.toString().toUpperCase());
        callback();
    }
});

const readableStream = fs.createReadStream('from.txt');
const writableStream = fs.createWriteStream('to.txt');

// 正确的错误处理 - 为每个流单独监听错误事件
readableStream.on('error', (err) => {
    console.error('读取文件时发生错误：', err.message);
});

upperCaseTransform.on('error', (err) => {
    console.error('转换数据时发生错误：', err.message);
});

writableStream.on('error', (err) => {
    console.error('写入文件时发生错误：', err.message);
});

writableStream.on('finish', () => {
    console.log('数据已通过管道成功转换并写入 to.txt');
});

// 使用管道连接流
readableStream.pipe(upperCaseTransform).pipe(writableStream);
